{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 2066 samples, validate on 240 samples\n",
      "Epoch 1/50\n",
      "2066/2066 [==============================] - 4s 2ms/sample - loss: 0.0681 - val_loss: 0.0406\n",
      "Epoch 2/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0197 - val_loss: 0.0402\n",
      "Epoch 3/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0113 - val_loss: 0.0079\n",
      "Epoch 4/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0083 - val_loss: 0.0080\n",
      "Epoch 5/50\n",
      "2066/2066 [==============================] - 2s 927us/sample - loss: 0.0071 - val_loss: 0.0125\n",
      "Epoch 6/50\n",
      "2066/2066 [==============================] - 2s 957us/sample - loss: 0.0059 - val_loss: 0.0044\n",
      "Epoch 7/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0050 - val_loss: 0.0048\n",
      "Epoch 8/50\n",
      "2066/2066 [==============================] - 2s 943us/sample - loss: 0.0043 - val_loss: 0.0029\n",
      "Epoch 9/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0041 - val_loss: 0.0016\n",
      "Epoch 10/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0037 - val_loss: 0.0110\n",
      "Epoch 11/50\n",
      "2066/2066 [==============================] - 2s 923us/sample - loss: 0.0033 - val_loss: 0.0058\n",
      "Epoch 12/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0034 - val_loss: 0.0015\n",
      "Epoch 13/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0030 - val_loss: 0.0025\n",
      "Epoch 14/50\n",
      "2066/2066 [==============================] - 2s 932us/sample - loss: 0.0028 - val_loss: 0.0106\n",
      "Epoch 15/50\n",
      "2066/2066 [==============================] - 2s 926us/sample - loss: 0.0025 - val_loss: 0.0021\n",
      "Epoch 16/50\n",
      "2066/2066 [==============================] - 2s 996us/sample - loss: 0.0024 - val_loss: 0.0022\n",
      "Epoch 17/50\n",
      "2066/2066 [==============================] - 2s 951us/sample - loss: 0.0020 - val_loss: 0.0045\n",
      "Epoch 18/50\n",
      "2066/2066 [==============================] - 2s 971us/sample - loss: 0.0023 - val_loss: 0.0033\n",
      "Epoch 19/50\n",
      "2066/2066 [==============================] - 2s 962us/sample - loss: 0.0025 - val_loss: 0.00520s - \n",
      "Epoch 20/50\n",
      "2066/2066 [==============================] - 2s 986us/sample - loss: 0.0022 - val_loss: 0.0052\n",
      "Epoch 21/50\n",
      "2066/2066 [==============================] - 2s 992us/sample - loss: 0.0019 - val_loss: 0.0036 0s - los\n",
      "Epoch 22/50\n",
      "2066/2066 [==============================] - 2s 978us/sample - loss: 0.0019 - val_loss: 0.0017\n",
      "Epoch 23/50\n",
      "2066/2066 [==============================] - 2s 975us/sample - loss: 0.0018 - val_loss: 0.0059\n",
      "Epoch 24/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0019 - val_loss: 0.0012\n",
      "Epoch 25/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0017 - val_loss: 0.0013\n",
      "Epoch 26/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0016 - val_loss: 0.0016\n",
      "Epoch 27/50\n",
      "2066/2066 [==============================] - 2s 988us/sample - loss: 0.0015 - val_loss: 0.0014\n",
      "Epoch 28/50\n",
      "2066/2066 [==============================] - 2s 997us/sample - loss: 0.0014 - val_loss: 0.0038\n",
      "Epoch 29/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0016 - val_loss: 0.0010\n",
      "Epoch 30/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0014 - val_loss: 0.0011\n",
      "Epoch 31/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0013 - val_loss: 0.0112\n",
      "Epoch 32/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0016 - val_loss: 0.0015\n",
      "Epoch 33/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0017 - val_loss: 0.0016\n",
      "Epoch 34/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0013 - val_loss: 0.0056\n",
      "Epoch 35/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0012 - val_loss: 0.0012\n",
      "Epoch 36/50\n",
      "2066/2066 [==============================] - 2s 1000us/sample - loss: 0.0014 - val_loss: 0.0012\n",
      "Epoch 37/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0011 - val_loss: 0.0053\n",
      "Epoch 38/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0012 - val_loss: 0.0011\n",
      "Epoch 39/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0013 - val_loss: 9.6181e-04\n",
      "Epoch 40/50\n",
      "2066/2066 [==============================] - 3s 1ms/sample - loss: 0.0011 - val_loss: 0.0011\n",
      "Epoch 41/50\n",
      "2066/2066 [==============================] - 3s 2ms/sample - loss: 0.0011 - val_loss: 0.0029\n",
      "Epoch 42/50\n",
      "2066/2066 [==============================] - 3s 1ms/sample - loss: 0.0013 - val_loss: 0.0023\n",
      "Epoch 43/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 9.8726e-04 - val_loss: 0.0033\n",
      "Epoch 44/50\n",
      "2066/2066 [==============================] - 3s 1ms/sample - loss: 0.0012 - val_loss: 0.0040\n",
      "Epoch 45/50\n",
      "2066/2066 [==============================] - 3s 1ms/sample - loss: 0.0011 - val_loss: 0.0012\n",
      "Epoch 46/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0013 - val_loss: 0.0033\n",
      "Epoch 47/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0011 - val_loss: 0.0020\n",
      "Epoch 48/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0012 - val_loss: 0.0031\n",
      "Epoch 49/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 0.0010 - val_loss: 0.0018\n",
      "Epoch 50/50\n",
      "2066/2066 [==============================] - 2s 1ms/sample - loss: 9.5378e-04 - val_loss: 0.0010\n",
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "simple_rnn (SimpleRNN)       multiple                  6560      \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            multiple                  0         \n",
      "_________________________________________________________________\n",
      "simple_rnn_1 (SimpleRNN)     multiple                  18100     \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          multiple                  0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                multiple                  101       \n",
      "=================================================================\n",
      "Total params: 24,761\n",
      "Trainable params: 24,761\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    },
    {
     "data": {
      "image/png": "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aafVDGUMto/8yJEjGTp0KD/60Y8oLS3l008/Ze7cufzyl79k2LBhfPfdd0yfPp3XXnsNsHfADh8+nCFDhnDFFVfU1C8zM5O77rqLESNGMGTIENauXRv1vrbncMYx1Y9eUzdKtcD/bodtX7buOg8fApMerHd2ly5dGDVqFG+//TaTJ09m9uzZXHjhhYgI999/P507dyYUCnHqqaeyevVqjj322IjrWb58ObNnz2blypUEg0FGjBjBcccdB8D555/PlVdeCcBvf/tbnnnmGW688UbOPfdczj77bC644IJa6yovL2f69Om89957HHXUUVx66aU8/vjj/PznPwega9eurFixgr/97W889NBDPP30041+De09nHFMtegTawK9pm6UOlSEp2/C0zZz5sxhxIgRDB8+nOzs7Fpplro++ugjfvjDH5KUlERaWhrnnntuzbyvvvqKk046iSFDhjBr1qx6hzmutm7dOvr27ctRRx0FwGWXXcaiRYtq5p9//vkAHHfccTUDoTWmvYczjrEWfXWOXlv0SjVZAy3vtnTeeedxyy23sGLFCsrKyhgxYgQbN27koYceYunSpXTq1Inp06dTXl7e4Hrquxt++vTpvPnmmwwdOpTnn3+ehQsXNriexsb/qh7quL6hkJuyzgM1nHFULXoRmSgi60RkvYjcHmG+iMhMZ/5qERkRNq+jiLwmImtFZI2IHN/s2jZCUzdKHXpSUlIYP348V1xxRU1rvqioiOTkZDp06MD27dv53//+1+A6Tj75ZN544w3KysooLi7mP//5T8284uJiunfvTiAQYNasWTXTU1NTKS4u3m9dAwYMYNOmTaxfvx6Af/zjH4wbN65F+9jewxk3eogQETfwGHA6kAssFZG5xpjw86hJQH/nZzTwuPMK8CjwtjHmAhHxAUktqnEDEjwuXKIXY5U61Fx00UWcf/75NSmcoUOHMnz4cAYNGkS/fv044YQTGlx+xIgRXHjhhQwbNow+ffpw0kkn1cy77777GD16NH369GHIkCE1wX3q1KlceeWVzJw5s+YiLIDf7+e5555jypQpBINBRo4cyTXXXNOk/TnYhjNudJhipwV+tzHmTOfzrwGMMQ+Elfk7sNAY84rzeR0wHtgLfAH0M00YD7m5wxQDDL5rPj/O6sWd5wxs1vJKxRMdpvjQ1BbDFPcEcsI+5zrToinTD8gHnhORlSLytIgkE4GIXCUiy0RkWX5+fhTViizR56YsoBdjlVKqWjSBPtIVjrqt8/rKeIARwOPGmOHYFv5+OX4AY8yTxpgsY0xWenp6FNWKLMnnZm+Fpm6UUqpaNIE+F+gV9jkDyIuyTC6Qa4z53Jn+Gjbwt5lErz5OUKmmOBifMqfq15zfVzSBfinQX0T6OhdTpwJz65SZC1zq9L4ZAxQaY7YaY7YBOSJytFPuVKD+zrCtIElTN0pFze/3s2vXLg32hwhjDLt27cLv9zdpuUZ73RhjgiJyAzAfcAPPGmOyReQaZ/4TwDzgLGA9UApcHraKG4FZzkFiQ515rS45wUOJDlOsVFQyMjLIzc2lJdfF1IHl9/tr9eiJRlQ98I0x87DBPHzaE2HvDXB9PcuuAiJeCW4LiV43+cUVB2pzSh3SvF4vffv2be9qqDYWU0MggE3daI5eKaX2iblAn+jz6Fg3SikVJuYCvbbolVKqtpgM9GWBkPYiUEopR8wF+kSfG2OgPFDV3lVRSqmDQswF+mR9nKBSStUSc4E+UYcqVkqpWmIu0OuY9EopVVsMB3pN3SilFMRgoE/02hy9PnxEKaWsmAv0mrpRSqnaYi7QJyc4gT6ggV4ppSAGA32irzp1ozl6pZSCGAz0SV5N3SilVLiYC/Taj14ppWqLuUCf4HHhEu1eqZRS1WIu0IsIST6PtuiVUsoRc4EenBEsNdArpRQQw4FeW/RKKWXFZKBP1NSNUkrViCrQi8hEEVknIutF5PYI80VEZjrzV4vIiLB5m0TkSxFZJSLLWrPy9bEter0Yq5RSAJ7GCoiIG3gMOB3IBZaKyFxjzNdhxSYB/Z2f0cDjzmu1CcaYna1W60Yk+dwUl2ugV0opiK5FPwpYb4zZYIypBGYDk+uUmQy8aKzFQEcR6d7KdY1aolcvxiqlVLVoAn1PICfsc64zLdoyBnhHRJaLyFXNrWhTJCd4KA1oi14ppSCK1A0gEabVffJ2Q2VOMMbkiUg34F0RWWuMWbTfRuxB4CqA3r17R1Gt+iVq90qllKoRTYs+F+gV9jkDyIu2jDGm+nUH8AY2FbQfY8yTxpgsY0xWenp6dLWvR5JXu1cqpVS1aAL9UqC/iPQVER8wFZhbp8xc4FKn980YoNAYs1VEkkUkFUBEkoEzgK9asf4RVfejr6qqe+KhlFLxp9HUjTEmKCI3APMBN/CsMSZbRK5x5j8BzAPOAtYDpcDlzuKHAW+ISPW2XjbGvN3qe1FH9VDF5cEQSb5oslNKKRW7ooqCxph52GAePu2JsPcGuD7CchuAoS2sY5OFP2VKA71SKt7F5J2x1YFeL8gqpVTMBnrbitcLskopFbOBvjp1o33plVIqJgO9PmVKKaX2iclAn6SBXimlasR4oNfUjVJKxWigtxdjtdeNUkrFbKDX1I1SSlWLyUBffTG2LKCBXimlYjLQ+9wu3C5hb4Xm6JVSKiYDvYjoCJZKKeWIyUAPOia9UkpVi9lAb58ypYFeKaViNtDb58Zqjl4ppWI20Fc/fEQppeJdzAb6RJ+bvRrolVIqdgN9kk9TN0opBTEd6D2aulFKKWI60Gv3SqWUghgP9NqiV0qpGA70iT4PZYEQVVWmvauilFLtKqpALyITRWSdiKwXkdsjzBcRmenMXy0iI+rMd4vIShF5q7UqHtGrl8C8X8Kql+kZ2IyLKsqD2qpXSsU3T2MFRMQNPAacDuQCS0VkrjHm67Bik4D+zs9o4HHntdrNwBogrZXqvb9gJZTuhvXvwZInuRD4QYIfz4vDoddxMGQK9BjWZptXSqmDVTQt+lHAemPMBmNMJTAbmFynzGTgRWMtBjqKSHcAEckAfgA83Yr13p/HB5f/F36dA9d9zpJh9/Na6GRMsBI+/zu8/es23bxSSh2sogn0PYGcsM+5zrRoyzwC/AqoamgjInKViCwTkWX5+flRVKseLjd0G0B+vx9xd3A6G897E46eCGW7m79OpZQ6hEUT6CXCtLpXOCOWEZGzgR3GmOWNbcQY86QxJssYk5Wenh5FtRqWlBD2lCl/RygraPE6lVLqUBRNoM8FeoV9zgDyoixzAnCuiGzCpnxOEZGXml3bJkjyOk+ZqgxBYkco10CvlIpP0QT6pUB/EekrIj5gKjC3Tpm5wKVO75sxQKExZqsx5tfGmAxjTKaz3PvGmItbcwfqU/2A8JoWfbAcAuUHYtNKKXVQabTXjTEmKCI3APMBN/CsMSZbRK5x5j8BzAPOAtYDpcDlbVfl6CTWPCA8CP4OdmJ5IXj97VgrpZQ68BoN9ADGmHnYYB4+7Ymw9wa4vpF1LAQWNrmGzZTkC8vRJ3ayE8sLIPWwA1UFpZQ6KMTsnbG1Ar2/o52oF2SVUnEohgO9PVkpqwzai7GgF2SVUnEpZgO9z+PC4xKnRR+Wo1dKqTgTs4Ee7AVZTd0opeJdTAd6O1Sxpm6UUvEtxgO985Qptxe8yZq6UUrFpZgO9InesKdM+Tto6kYpFZdiOtAnJ4Q9ZUqHQVBKxamYDvSJPg+lgeoWvQ5sppSKTzEd6JO8btuPHmzqRnP0Sqk4FNuB3udmb4WmbpRS8S2mA32iz02Zpm6UUnEupgN9TT96sC36ymIIBdu3UkopdYDFeKD3UB6ooqrK7BsGoaKofSullFIHWIwHeucpU4HwYRD2tGONlFLqwIuLQF9a/ThB0AuySqm4E9OBPrHmcYLBfS167WKplIozMR3oaz98xMnRa88bpVScielAn6ipG6WUiu1An1zzlCkdk14pFb+iCvQiMlFE1onIehG5PcJ8EZGZzvzVIjLCme4XkSUi8oWIZIvIPa29Aw3Zl7oJgjcRXF7N0Sul4k6jgV5E3MBjwCRgIHCRiAysU2wS0N/5uQp43JleAZxijBkKDAMmisiYVqp7oxLDu1eK6DAISqm4FE2LfhSw3hizwRhTCcwGJtcpMxl40ViLgY4i0t35XOKU8To/prUq35jqFn3NeDc6DIJSKg5FE+h7Ajlhn3OdaVGVERG3iKwCdgDvGmM+j7QREblKRJaJyLL8/Pxo69+gJG9Y90pwWvSaulFKxZdoAr1EmFa3VV5vGWNMyBgzDMgARonI4EgbMcY8aYzJMsZkpaenR1GtxtWkbsKfMqWpG6VUnIkm0OcCvcI+ZwB5TS1jjCkAFgITm1zLZvJ5XHjdog8fUUrFtWgC/VKgv4j0FREfMBWYW6fMXOBSp/fNGKDQGLNVRNJFpCOAiCQCpwFrW7H+jar13Fi9GKuUikOexgoYY4IicgMwH3ADzxpjskXkGmf+E8A84CxgPVAKXO4s3h14wem54wLmGGPeav3dqF+Sz7MvR+93cvTG2F44SikVBxoN9ADGmHnYYB4+7Ymw9wa4PsJyq4HhLaxji9gx6cNy9KYKKorBn9ae1VJKqQMmpu+MBXtBtjQ8dQOavlFKxZWYD/S1njKlwyAopeJQHAR6T+2LsaB96ZVScSUOAn2dHD1o6kYpFVdiPtDXytFr6kYpFYdiPtAn+dx2UDPQ1I1SKi7FQaD3sLfCuRjrSwVEUzdKqbgS84E+0eumIlhFqMqAy2Xz9Jq6UUrFkZgP9MkJYWPSgw6DoJSKOzEf6BN9dYYq9utQxUqp+BLzgT7JG2GoYk3dKKXiSOwH+prnxmrqRikVn2I+0CeGPyAcdEx6pVTciflAn1STow9v0WuOXikVP+Ig0NdJ3fg7QKgCAmXtWCullDpw4ibQl+kwCEqpOBUHgT5C6gY0faOUihsxH+j3vxirI1gqpeJLzAf6/XP0neyrpm6UUnEi5gO91+3C6xZ9nKBSKm7FfKAHO7BZWd3HCWqOXikVJ6IK9CIyUUTWich6Ebk9wnwRkZnO/NUiMsKZ3ktEPhCRNSKSLSI3t/YORCM5wROWukmzr5q6UUrFiUYDvYi4gceAScBA4CIRGVin2CSgv/NzFfC4Mz0I3GqMOQYYA1wfYdk2l+hzU1o9eqXbC74UTd0opeJGNC36UcB6Y8wGY0wlMBuYXKfMZOBFYy0GOopId2PMVmPMCgBjTDGwBujZivWPSpLPva8fPegIlkqpuBJNoO8J5IR9zmX/YN1oGRHJBIYDn0faiIhcJSLLRGRZfn5+FNWKXrLPQ0Fp5b4JiTrejVIqfkQT6CXCNNOUMiKSAvwL+LkxpijSRowxTxpjsowxWenp6VFUK3qDe3YgO6+IimDYMAiaulFKxYloAn0u0CvscwaQF20ZEfFig/wsY8zrza9q843p14WKYBWrvneCu45gqZSKI9EE+qVAfxHpKyI+YCowt06ZucClTu+bMUChMWariAjwDLDGGPPnVq15E4zK7IwILN6w207QESyVUnGk0UBvjAkCNwDzsRdT5xhjskXkGhG5xik2D9gArAeeAq5zpp8AXAKcIiKrnJ+zWnsnGtMhycugHml8tmGnneDXh48opeKHJ5pCxph52GAePu2JsPcGuD7Cch8TOX9/wI3p24UXF2+mPBDC7+8AlSUQCtjulkopFcPi4s5YsHn6ymAVq3IKdARLpVRciZtAP7JvZ1wCn323S4dBUErFlbgJ9B0SvQzq0YHFG3btG6pYe94opeJA3AR6gDH9OrMyp4AKb6qdUL6nfSuklFIHQFwF+uOPsHn6r/c4u62pG6VUHIirQJ+VafP0S7Y5N+1q6kYpFQfiKtCn+b0M7tmBRTnOuDfal14pFQfiKtADHN+vC0tzyjDuBG3RK6XiQtwF+jH9ulAZqiLgTdMcvVIqLsRdoM/K7ITbJRSLPnxEKRUf4i7Qpzp5+p1Bv6ZulFJxIe4CPdj+9FsrEqjSQK+UigNxGui7sMckU1GiN0wppWJfXAb6kZmdKSZZUzdKqbgQl4E+JcGDP7UzCaFiqKpq7+oopVSbistAD9Cl62G4MJSWNKFVX1EMs6fBti/brmJKKdXK4jbQ9+zeHYCvvtsc/ULLn4e1b8Gql9umUkop1QbiNtBn9rSBfs3G76NbIFgBnz1m329c1Ea1Ukqp1he3gd6f2gWADTlboltg9atQvBX6joPtX0FJfhvWTimlWk/cBvrqxwlu37GdpZt2N1y2KgSfzITDj4VT77TTNrVDq/77z6Gy9MBvVx1cFj4Iz5zZ3rYk74MAAB6iSURBVLVQh5CoAr2ITBSRdSKyXkRujzBfRGSmM3+1iIwIm/esiOwQka9as+It5jxOMDM5wC1zVlFSEay/7Nr/wq5v4cQZ0H0YJKQd+PRN8TZ49kz44P623U6wom3Xr1pu3TzIWQx7d7Z3TdQhotFALyJu4DFgEjAQuEhEBtYpNgno7/xcBTweNu95YGJrVLZVOY8TnHZsGrl7yvjdW19HLmcMfPwwdOoLAyeD2wOZJ8KGDw9gZYGczwEDK1+CQFnbbGPHWnggw545qINToBy2Z9v3ucvaty7qkBFNi34UsN4Ys8EYUwnMBibXKTMZeNFYi4GOItIdwBizCGgkN9IOElJB3PRKDHD1yUcwe2kOC77evn+5TR9B3go44SZwue20vuNgz0YoiPJCbmvIWWJfywsg+8222cY3b0OoEr75X9usX7Xc9q+gyjn7zF3avnVRh4xoAn1PICfsc64zrallGiQiV4nIMhFZlp9/AC50ithWfXkBM07vz4DDU7n99dXsKqmTuvj4YUjuBkN/sm9a35Pt64Fs1ed8Dr3GQJcjYdmzbbONjc7+bPq4bdavWm7Lcvua2h22aIteRSeaQC8RpplmlGmQMeZJY0yWMSYrPT29KYs2X2JHKCsgwePm4QuHUVQW5P/e+ApjnKrnrYLv3ofjrwOvf99y3Y6xwf9A5ekD5bD1C+g9GrKugNwlrX/TVrACNn8Gbh9sWWFvDlMHny0rIOVwOHoS5C63HQWUakQ0gT4X6BX2OQPIa0aZg4/Togc4pnsat5xxFG9nb+P1FU6Xy08etRdes66ovZyIbdVv/NDm8Nva1i9sSiVjFAy9CDz+1m/V5y6FYBkcNx1MSPP0B6sty6HnCMgYCZXFsPOb9q6ROgREE+iXAv1FpK+I+ICpwNw6ZeYClzq9b8YAhcaYra1c19bn71jrKVNXntSPUZmduXtuNts2rYGv37RB3rlwW0vfk6FkO+Sva/t65jhBt9coSOoMg86H1XNat9W9YSGIC068BVxee21CHVzKC23vrx5OoAfN06uoNBrojTFB4AZgPrAGmGOMyRaRa0TkGqfYPGADsB54CriuenkReQX4DDhaRHJF5KetvA/N56RuqrldwkNThlJlDF/OuQ/j8sKYayMv22+cfT0Q6ZvcJdApE1K62c9ZV0BlCXz5z9bbxoYPocdwSOsOPY/TPP3BKG+lfe05AjofYRsq2vNGRcETTSFjzDxsMA+f9kTYewNcX8+yF7Wkgm3K3wFKdtgxbIKVEKqkd6iSOUfv4Mhv3mGuZwLeTYZJgw0idS5DdMqEjn1s+mb0VW1XR2Nsj5t+4/dNy8iCw4bA0mfhuMttKqklyotsSuCEm+3nzBPtReiKYts7SR0ctqywrz2Gg8tl/w400KsoRBXoY1anvlBRCP+5udbkQUAgoQNv+C5g4awVjOrbmTvPHsjgnnVSOP3Gwdf/thfEqrtetraCzTZF1GvUvmkiMPIKeGuG/UfvNbJl29j8qc3LV5+lZJ4IHz1k8/T9T2vZulXr2bIcOvez6TuAnlmw/v/pAVk1Kr4D/Qk3w6AfgssDngRwe8FtX70uN0+Hqnh1WQ5/eucbzvnrx0w5LoNfnHk03VKdHjh9x8GKF2HrKpvuaAs5Tg42Y1Tt6UOmwDt32IuyLQ30Gz+0F3h7jbGfe43el6fXQH/wyFsJvY/f9zljJGBsS7/6IK1UBPE71g3YlnGnPtChJyR3takcr7+mde5xu5g2ug8f/GI8V57UjzdWbmHCHxfy2AfrKQ+E9vWnb8s8fc7n4EuBbnVuRk5IhWN/DNmvQ2kL70fb8KEN7tVdSH1JNi2gF2QPHsXboGhL7QZFT2ekEe1PrxoR34E+Sh0SvfzmrGN4d8Y4xh7ZlT/OX8epf/qQ/24IYboNbNsbp3I+t//c7ggnX1lXQLAcvnil+esvyYcd2fu3CDNPtPcRlBc1f92q9VTn53uO2DctqTN06a95etUoDfRNkNk1macuzeLln40m1e/h+pdX8L+S/lRt/qxtBgOrKLHjmvQaFXn+4UNsSmfZs83vz199N2zf8bWnZ55o8/Y52p/+oJC3AsRtR1ANl5Flu1geiPs51CFLA30zjD2yK/+96SQePH8IC8oH4AqV89g/XiFndysPIZy3wgbbXqPrL5N1Bexa3/z00cYPIaED9BhWe3rGqNjrT28M7FjT3rVoni3LbfrOl1R7ekYW7M23F+2VqocG+mZyu4Spo3pzz01XU4ULs+FDTv7jB1z+3BLe/Xo7wVArPHS8ujWdkVV/mUHnQWInWPJk87ax4UPbeq/ba6gmTx9D/emXPw9/G2OHtTiUGOeCa3japlrNjVPNTN98/vd9o2GqmKWBvoVSO3bB1XMEV2XkcOOEI8nOK+LKF5dx0h8+4JEF37C1sAVDCucsha5H20BeH28ijLrKPsu2qf+wezbZlmB9PTYOZJ4+FIQvZsPSp+1QzF++Bmvegm8XwKZPoHJvy9YfKIdFf7TvP/1Ly+t7IO3eYIfqiBTouw0CT2LzAv3GRfC/X8F/b215HfPXwT+n17oBUR084rt7ZWvpezK+T2dyy/Qe3Hhqf95bs4OXl3zPIwu+ZdZ7yziufwaTRhzBacccRnJClF95VZW9I3bA2Y2XHX2NfZ7toj/ClOejr3f1ReS+DQT6RX+0Zxb9T49+vU0VKId//dQerOrTuZ/dt+5Dm7eNFS/aXitHng7r34VtX8Hhg5u3rgOt5o7YCF143R57A1VTh0IwBt7/HSDw/Wf2Xoo+Y5tfx3fugG/nQ/oAGL/fs4lUO9MWfWvoN86OEf71v/F++zYT85/jRf+fWd/lFpYmXMvvv5/G06++TtbvFnDDyyt4J3sbFcFGRh3ctR7K9jScn6+W1Nm26rPfbNrYOxsW2pEQ04+OPD9jlB3Nsjn5/1AwutZdeRHMusAG+YkPwq3fwM2r4fqlcPUi+Om7MOUFezB4+jRY8lTTLzwGyuCjP0GfE+D8J8GbvO9B74eCLcttqz39mMjzM7Jg2+qmdQj49l17AD/zfkjqCh/9ufn1y11mg3xCGiz+W63xo9TBQVv0raHXaHuj1b+dUSDEBV2PwnPEODhsEJ2WPs2bJb/npV738Mh6F2+t3kqa38P4o7uR0SmRbqkJHJbmp1uan8PSEkhPTSAh13nQSH09buo6/nr4/Akb0M6PIl9fVWUD+BGn1D+Egi/J3n3Z1Dx9oBxenmLvrB1zLZx0S+SB4UryYdaPbMrp/KfsfQH1yTwJ3rga5v3CXiA+Z2bNc38btew5KNkGFzxjD4rDL7Y9lU69047tc7DbssKeyUTqYgs2T//pTDt0dUPXc6oZA+/fZ4fwGHmlPRC+fx9sXQ3dj218+bo+uB8SO8PUWfDcJPj8SRj3y6avR7UZDfStwZsIP3rKjpvTfSgcNgh8yTWz5dgLcc+6gMs23c60c2byUfIZ/GdVHos37GLelxUEq2q3UEVgZtIbTHCl8ujnAY487HuO7JbCkempdEjyRq5DclcY+VPbUh13G3Q5ouE67/gaSnc2fkdl9XAI5UXgT2v8uwgF4LXL7UHkyNPsUM8rXrSn88ddDh6fLbdnM/zjh1CUB1NfgaPOaHi9yV3gJ3Pgs7/AgnvstYMpzzV+R3LlXvj4z/bmtswT7bQx18LSp+wF7NPuanyfWkt5YeQDXkNCQTtMddbl9ZcJH8kymkC/Zq49AzjvCfv7GPkz+PgR+z01JfUH9hkG370Pp99rUz9HnwWf/RVGXx3d38uBFiiD9e/Z50D3Gw9DL2zvGh0QGuhby8C6T1cMk3o4TJ8Hcy7BM/d6JpxyBxN+fCuIUFVl2F1ayfaicnYUV7CjqJy8gnKyln7L11VH8cLiHCqD+3rw9OjgZ2CPNAb26MCgHmkM7J5GRqdEO+ja8TfCkqcwH/2JwNl/pSwQIsHjwu+NMA7Pxkby89UyT4RFf4DvFzcejKuq7FnNunlw1kMw6kobpN75rb3o9/nf4fR77MiLL50PgVK49E3oPabh9VZzueywFb2Ph9eugGfOhIkP2O3UZ+kztvvh+H/sm9a5r732sewZOOlWSEiJbvstseQpmPdLmPxXe0YRrfw19jkBPSJciK2W1h3SMpw8fT2jrVarCsH790PXo/adQSV2tI2ET2fCru8abySE++B++xCekc7vYNyv4Mnx9iB68i+iX09bqiyF9QvssOPfzLcjv4obvpxj/xaiPWs+hGmgP1D8afCTf9pA+P59ULwVJv0Bl8tN15QEuqYkMKi6bFkBfLKZ7hMuYc1JE8ndU8r6HSV8u6OENVuLyM4r4v21O6g+EUjze+iQ5KWssoqbA6dw0cpXOOXzkeSabrjE3ug1sHsaA3ukcUz3NAZ1TyN9w4dI5yOgY6/6amxljLR5+k0fNRzojbHBfPWrcMod+4Jv96Fw6VybE373Dnj1YvtPlpwOl//Pnv00Va9RNn//5rU2lVOYA6febQ8E4SpK4JNHbHqqz/G154290bZsV82yrc+2tHae/W48ftvDpftQe7NbNCLdERtJxnHRXZD98jXYuc623MO71Fan/j55BM6NslfSxkX272Lig/v69/cYDv3P3Neqb8/B1nKW2MbFuv9BYC8kdYHBP7Jdkg8/Fp46xfYUuvoje8bYkE2fwOrZcOIM2zEgGmV7wJdaf8rtAGr/GsQTjw9++HfbAvvkUZu2OGcmpNR5dGJ1V7leo3C7hD5dkunTJZlTjzmspkhZZYi124r4emsRX+cVUVoZwu91s9NcDV+9y98zF7F40J0UlQVYs7WIVTkFvLXaPgvGQ5Av/B+yMGECb764jB4d/HTvmEiPjon07OinT5dkuiT77FlCtHn6939n0yFjb7Kt5HAi9iBxxCmw6iX45h2Y+Hs71HNzJXWGqS/bAPrJo3YsmHP/ui81BLZVWboLxv9m/+V7jbLXVhb/zaYu2mr00S3L7dlH92E21fTMmTDnUrhqYXRpnC3L7bjzjQWXjJF2JNWSHfueW1BXKAALf2+HuD6mzhloSjd7prH8BRh3ux3/qSHGwAe/t8+uPa5OWmncbfD0Kbar7IkzGl5PU+Qus0G71yh7YT3SmVgoaA/gnz1mxwDyd7BnLoPOgz4n1g66P34RnjkDXr8Spr22f0Oh2ncfwCsX2TOr1XPsmcrYm+xAiJHs2Wy/m9Wv2seOnvuX6FJqbUgD/YHmctl8ZlpPmP9/8Ncsm84Yfum+P7Scz+0F3Qbyz4k+N8N7d2J47wh97P2XMWj5Cwy68F7o2LdmcmFZgLVbi9iTvYDk5eVsSs3i+12lLN6wi+LyYK1VpPo99OuaTN+uyUw1xzA67zk+yd6AN7EDCV43fq+LBI99TV/9dzwfPQQjLrP7Vt/FXbfHPqrwuOkAGGMorQxRUBagoLSSkvIgh6X5yeiUiMcdRYcwl9umiFIPtweavfn2nzch1V5T+HQm9D+j/tE9j78B5lxie/w0lHprrj2b4OULbRD9yav2dcpz8PzZ8O8bbF0be5ZAnnOjVGPlwm+cGnBW5DKrZtk6XfRq5KA29iZ74fqzx+yBuCHfvW+7ZZ71UO3nKYM9uzjyNHu/wsgrWyc1lv0GvH41hJyeRS6vTfkdMQH6TbApmJWzbAu+8Hs7BPlZD9lHb9a3/R7DYNL/g7d+bq9DjfvV/mXWL4DZ02y68YdOZ4f3f2cD/tkP77vuA7B3Jyx6yKYExWWvq3wz3/YWG3UVnHpHu53hiDkIx8jIysoyy5bFwUBN+evsmPKbP7FDBJ/9MBw2EF6cbFui1zTzrtSCHJg53AbUHzwUtr1v7Kn56ldtF8ObV9WMbV5SEWRrQRm5BWVs2rmXTTv3smHnXjbu3EvvwmW87LufR4M/JMd0w08lCVTiJ0B32cXFnvdY5D2Jt/rfy8CenRjcswPHdE8jyedmR3EFG/L3smFnCRvz7TpzdpeypzRAYVklgdD+f38el9CrcxKZXZLIdA42vTon0atTIj07JpHoi9D6XvkSzL3J9o2f9pptmX7wO7jyg/rTHlUh+Mtx9kL2zxY077uuT+lu21rcm2+7iKYftW/eJzNtGuvMB+yD5+tTWQoPZNhW8al3NLy9QJktO/amyBeYA+XwlxGQ1sPWp74Dx+tX2xbxjOx9497XZQw8fao9e7hxeeSWbc4SeOZ0e+A/4eb950fLGHvAePcOewY25QX7nNzv3rc/21bXLt/nBJuGOmpidGdpxtjeXKvnwCVv2ANHtW/egVen2e7Hl/x7X3rnm3dg3q1Q8D0M/YntaLB6jj2zDOyFYdNg/K/tWVFFMbx3nz27TOsBP/iTfbB7GxCR5caYiKcOGujbmzGw6mV7wbKiyP6RLn0Ghk61fxTNNfcme6fpzV/A3h22JfL1XJsnPu4y25ptLD/vKC8twfvIANyV+z+jtgoX33Qez4NJt/Ll1jJ27a0EbBzxe9yUBfbdL5DgcdG3azJ9uiTROTmBjkleOiZ66ZDopWOSlySfh21F5fZAs2svG3eWsmnn3lrrAOiakkBGp0QyOiWS6vdQEayiMljF0UWfctX2+yhwdSKlqpjvko7ltaP+SKckH11SfHRO9pHq91JSHqSgrJKC0gBHbnqZMzf/iT/2nMmeriOc9SbVrD89JWH/p4s1JlhhexTlLoVL/73/jUjG2Fbit/PtdYr6LgZ+/zk8e4btlVRfKz3c38fZFuP0CDeeLX4C3r7N1qff+PrXsWONHSZi3G0wIULKC2wr9eUf27TjcZfVv64Xz7NdPn/+5f5j9ESjKgRv326D5MDJNu3pTaxdpiTf3g+yIxuOObfxaxmRVO6Fp061B+VrPrIBee08m2I7bJA9ANQ96FWW2psJP51p76EBe4H/1Dsj35eSsxT+c5Pt7TZwMpz5e+iQ0fS6NkAD/aGgdLdttax8yX7+4ZMt6/q1e6NtraZ2h6JcezPLqCth9LX7XxOIRvE2e5HY67c371S/ur01rUNjDNuLKsjOK+SrLUUUlFXS12mR90tPoXuaH5eraUHTGMOO4gpydpeSu6eM3D3Vr2Xk7CmltDKEz+0iwePC53Ex2HzDnUX3kGaKuCrxYZZUZFBQGqh3/Z28lSx038BqzxBuNrey2zlQVUvwuEhNcNNZiukneWSaPPqwhT5mC4kE2OPrRrHvcEoTu1OR3INAak/G5z1D/x1vs3jEH9nd9xySfG6SfB68bmFXSSXbi8sp2JXP1JUXQ1WQ61MeIeDvTNcUX82F+a6pCWRtfYVjvniADZcuJ61bLzomemultAKhKvIKyti8q5Tvd5cyYMW9DMl/iw9Sz6EqFKKqKui8hhgX/JQtvr7MGvAYR6Qnc0S3FI5MT6Fnx8T9fyezp9lrMjO+2j/VYAzmyXFIeSHcsMz+/uvz/WJ49kw4434Ye0PUv3PABt9//cz24Bp7I5x2b/059NaQvw6enGAvko++2ubtuw+Fi19v+H6NHWvsMOEDzm68904oYFv9H/4BQpVO986pdtlWSG9poD+UbP7UplZOv7fpfa7r+u8vbG7z+OvsBceWru9QsWezPb13hm0IhqooKAuwe28lxeUBUhLsGUSHRK/tevrevfbO0LE3EijfS1lJARV7CwiVFkJFEWkVW0kK7TubqRQf+b5elOOjYyCfTlW7cFH7/+jBwFSeCJ1bbxVdAickb+GZ4G/4xn8sj3a8nb0lRZTvLSJQvpckKrje8yZHurYwtuKvNcul+j10SvJhMOQVlBMKuwdjgvdLHnM/jAuDERdVuEBcGHERkAT+X4ffMH9PT/aEHfgSPC46JflI9Lnxe90kel0M4lvu23EzS5NOJkd6EAoGqApVUhUKkhoq5GzXp9znuZFlHSeSnuqnW1oCh6X66ZzsJVhlqHTOsCpDVZz/1XWkl27g6X6PUGiSKKxKpDDooyJkqAjaDgQdk3x0TnTTNSFEuq+Sbu69HPfFnaTtyWbd8P8jp/8lCLY9URmsYkdxRU135O1F5eQXV1BUFiCjUxJHdEvZ70AWqKoiv7iC7UUV5BeXs73ILhcyhkSv2/743PTfMZ/jV9o8/Y6OQ3n9mEfZXumjsDRAQVmAssoQqX4PaYle0vxe0hI9pPm9JCe4KQ9UUVIRpLg8SElFgJLyICUVITokeunR0U/3Dol07+inR4dEerCD1DWv2jPugs02jXrMObZh13dcszsGaKCPV9W/25Y+PDzWFW+Dx0bve/aqP82eASWk2c8detoHfHQ9Crr2hw69arcug5VQnAeFuZiCHCpdfor7TqIsUMXeyiCllSFKK0JUhkJ0SbZ3QXdN8dnW+bLn7MXAeuzocw6LR/yBgtJKdu+16aY9pfaso3fnJHp1TqJP5yR6d0nisNTozph2763ku/wSvttRwoadeyksDVAWCFFaGaI8EKIsEOLW3fcwNrCYEC5C4qFKPFSJGyMe8lIG82T3e9hWEiS/uIIdxRX7nQlVG+tZx8uee2pNq0IokyTKXEm4TAh/VSl+KmodLMuMj5sCN/BuVeTeKm6X0C01gW6pCaSn+knze8hxuiGHH8i8bqn3OpDbJVQEa48yO8PzT46R75kRuI69JJKS4KFDopdOyV78HjclFUGKygIUlQcpqQjut16vW0j1e0lJ8JDkc1NQGmBHcTl17onEJbbsaM+3nCeLON18Siql7HAfRrdff1W791iUWhzoRWQi8CjgBp42xjxYZ744888CSoHpxpgV0SwbiQZ6dcBVhWxPiQN9UDTGnnUVb7N3U1f/eJPsa6Qx6A9UvSDq76MyWEVhWQCPS/A5aTSPS+z1ja1f2LGbyovswbTCeS0vsq3XhFTwpVDlS6FMEikxfgo7H0tlh741VTHOQcDjctEtLYHOSb56D2rhB7KNu/aS4vPQLS3BDjHinIFULx+qsmcWZZX2AFfuXA/qmOSjQ6IXbwO9v4Ih24ovqQiS6HWT4veQ4Nm/NR4M2bOQrYVl5BWUs7WwjOLyIJXBKnt9KVRFVWUZRxV+Qo/QFiZe+1CErTWuRYFeRNzAN8DpQC6wFLjIGPN1WJmzgBuxgX408KgxZnQ0y0aigV4ppZqmoUAfzdWNUcB6Y8wGY0wlMBuo2+l4MvCisRYDHUWke5TLKqWUakPRBPqeQE7Y51xnWjRlolkWABG5SkSWiciy/Pz8KKqllFIqGtEE+kiJsLr5nvrKRLOsnWjMk8aYLGNMVnp6M7r/KaWUiiiaIRBygfA7azKAvCjL+KJYVimlVBuKpkW/FOgvIn1FxAdMBebWKTMXuFSsMUChMWZrlMsqpZRqQ4226I0xQRG5AZiP7SL5rDEmW0SuceY/AczD9rhZj+1eeXlDy7bJniillIpIb5hSSqkY0NLulUoppQ5hB2WLXkTygc3NXLwrsLMVq3Oo0P2OL7rf8SWa/e5jjInYZfGgDPQtISLL6jt9iWW63/FF9zu+tHS/NXWjlFIxTgO9UkrFuFgM9E+2dwXaie53fNH9ji8t2u+Yy9ErpZSqLRZb9EoppcJooFdKqRgXM4FeRCaKyDoRWS8it7d3fdqSiDwrIjtE5KuwaZ1F5F0R+dZ57dSedWxtItJLRD4QkTUiki0iNzvTY32//SKyRES+cPb7Hmd6TO93NRFxi8hKEXnL+Rwv+71JRL4UkVUissyZ1ux9j4lA7zzJ6jFgEjAQuEhEBrZvrdrU88DEOtNuB94zxvQH3nM+x5IgcKsx5hhgDHC98zuO9f2uAE4xxgwFhgETnYEDY32/q90MrAn7HC/7DTDBGDMsrP98s/c9JgI9cfYkK2PMImB3ncmTgRec9y8A5x3QSrUxY8zW6ucQG2OKsf/8PYn9/TbGmBLno9f5McT4fgOISAbwA+DpsMkxv98NaPa+x0qgj/pJVjHsMGdoaJzXbu1cnzYjIpnAcOBz4mC/nfTFKmAH8K4xJi72G3gE+BVQFTYtHvYb7MH8HRFZLiJXOdOave/RPHjkUBD1k6zUoU1EUoB/AT83xhSJRPrVxxZjTAgYJiIdgTdEZHB716mticjZwA5jzHIRGd/e9WkHJxhj8kSkG/CuiKxtycpipUUfzVOwYt1254HsOK872rk+rU5EvNggP8sY87ozOeb3u5oxpgBYiL0+E+v7fQJwrohswqZiTxGRl4j9/QbAGJPnvO4A3sCmp5u977ES6PVJVnZ/L3PeXwb8ux3r0urENt2fAdYYY/4cNivW9zvdackjIonAacBaYny/jTG/NsZkGGMysf/P7xtjLibG9xtARJJFJLX6PXAG8BUt2PeYuTNWRM7C5vSqn2R1fztXqc2IyCvAeOzQpduBu4A3gTlAb+B7YIoxpu4F20OWiJwIfAR8yb6c7W+wefpY3u9jsRfe3NiG2RxjzL0i0oUY3u9wTurmF8aYs+Nhv0WkH7YVDza9/rIx5v6W7HvMBHqllFKRxUrqRimlVD000CulVIzTQK+UUjFOA71SSsU4DfRKKRXjNNArpVSM00CvlFIx7v8DjOrdi1+3tusAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "均方误差: 503.207851\n",
      "均方根误差: 22.432295\n",
      "平均绝对误差: 17.888582\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.layers import Dropout, Dense, SimpleRNN\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import pandas as pd\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
    "import math\n",
    "\n",
    "maotai = pd.read_csv('./SH600519.csv')  # 读取股票文件\n",
    "\n",
    "training_set = maotai.iloc[0:2426 - 300, 2:3].values  # 前(2426-300=2126)天的开盘价作为训练集,表格从0开始计数，2:3 是提取[2:3)列，前闭后开,故提取出C列开盘价\n",
    "test_set = maotai.iloc[2426 - 300:, 2:3].values  # 后300天的开盘价作为测试集\n",
    "\n",
    "# 归一化\n",
    "sc = MinMaxScaler(feature_range=(0, 1))  # 定义归一化：归一化到(0，1)之间\n",
    "training_set_scaled = sc.fit_transform(training_set)  # 求得训练集的最大值，最小值这些训练集固有的属性，并在训练集上进行归一化\n",
    "test_set = sc.transform(test_set)  # 利用训练集的属性对测试集进行归一化\n",
    "\n",
    "x_train = []\n",
    "y_train = []\n",
    "\n",
    "x_test = []\n",
    "y_test = []\n",
    "\n",
    "# 测试集：csv表格中前2426-300=2126天数据\n",
    "# 利用for循环，遍历整个训练集，提取训练集中连续60天的开盘价作为输入特征x_train，第61天的数据作为标签，for循环共构建2426-300-60=2066组数据。\n",
    "for i in range(60, len(training_set_scaled)):\n",
    "    x_train.append(training_set_scaled[i - 60:i, 0])\n",
    "    y_train.append(training_set_scaled[i, 0])\n",
    "# 对训练集进行打乱\n",
    "np.random.seed(7)\n",
    "np.random.shuffle(x_train)\n",
    "np.random.seed(7)\n",
    "np.random.shuffle(y_train)\n",
    "tf.random.set_seed(7)\n",
    "# 将训练集由list格式变为array格式\n",
    "x_train, y_train = np.array(x_train), np.array(y_train)\n",
    "\n",
    "# 使x_train符合RNN输入要求：[送入样本数， 循环核时间展开步数， 每个时间步输入特征个数]。\n",
    "# 此处整个数据集送入，送入样本数为x_train.shape[0]即2066组数据；输入60个开盘价，预测出第61天的开盘价，循环核时间展开步数为60; 每个时间步送入的特征是某一天的开盘价，只有1个数据，故每个时间步输入特征个数为1\n",
    "x_train = np.reshape(x_train, (x_train.shape[0], 60, 1))\n",
    "# 测试集：csv表格中后300天数据\n",
    "# 利用for循环，遍历整个测试集，提取测试集中连续60天的开盘价作为输入特征x_train，第61天的数据作为标签，for循环共构建300-60=240组数据。\n",
    "for i in range(60, len(test_set)):\n",
    "    x_test.append(test_set[i - 60:i, 0])\n",
    "    y_test.append(test_set[i, 0])\n",
    "# 测试集变array并reshape为符合RNN输入要求：[送入样本数， 循环核时间展开步数， 每个时间步输入特征个数]\n",
    "x_test, y_test = np.array(x_test), np.array(y_test)\n",
    "x_test = np.reshape(x_test, (x_test.shape[0], 60, 1))\n",
    "\n",
    "model = tf.keras.Sequential([\n",
    "    SimpleRNN(80, return_sequences=True),\n",
    "    Dropout(0.2),\n",
    "    SimpleRNN(100),\n",
    "    Dropout(0.2),\n",
    "    Dense(1)\n",
    "])\n",
    "\n",
    "model.compile(optimizer=tf.keras.optimizers.Adam(0.001),\n",
    "              loss='mean_squared_error')  # 损失函数用均方误差\n",
    "# 该应用只观测loss数值，不观测准确率，所以删去metrics选项，一会在每个epoch迭代显示时只显示loss值\n",
    "\n",
    "checkpoint_save_path = \"./checkpoint/rnn_stock.ckpt\"\n",
    "\n",
    "if os.path.exists(checkpoint_save_path + '.index'):\n",
    "    print('-------------load the model-----------------')\n",
    "    model.load_weights(checkpoint_save_path)\n",
    "\n",
    "cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,\n",
    "                                                 save_weights_only=True,\n",
    "                                                 save_best_only=True,\n",
    "                                                 monitor='val_loss')\n",
    "\n",
    "history = model.fit(x_train, y_train, batch_size=64, epochs=50, validation_data=(x_test, y_test), validation_freq=1,\n",
    "                    callbacks=[cp_callback])\n",
    "\n",
    "model.summary()\n",
    "\n",
    "file = open('./weights.txt', 'w')  # 参数提取\n",
    "for v in model.trainable_variables:\n",
    "    file.write(str(v.name) + '\\n')\n",
    "    file.write(str(v.shape) + '\\n')\n",
    "    file.write(str(v.numpy()) + '\\n')\n",
    "file.close()\n",
    "\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "plt.plot(loss, label='Training Loss')\n",
    "plt.plot(val_loss, label='Validation Loss')\n",
    "plt.title('Training and Validation Loss')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "################## predict ######################\n",
    "# 测试集输入模型进行预测\n",
    "predicted_stock_price = model.predict(x_test)\n",
    "# 对预测数据还原---从（0，1）反归一化到原始范围\n",
    "predicted_stock_price = sc.inverse_transform(predicted_stock_price)\n",
    "# 对真实数据还原---从（0，1）反归一化到原始范围\n",
    "real_stock_price = sc.inverse_transform(test_set[60:])\n",
    "# 画出真实数据和预测数据的对比曲线\n",
    "plt.plot(real_stock_price, color='red', label='MaoTai Stock Price')\n",
    "plt.plot(predicted_stock_price, color='blue', label='Predicted MaoTai Stock Price')\n",
    "plt.title('MaoTai Stock Price Prediction')\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('MaoTai Stock Price')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "##########evaluate##############\n",
    "# calculate MSE 均方误差 ---> E[(预测值-真实值)^2] (预测值减真实值求平方后求均值)\n",
    "mse = mean_squared_error(predicted_stock_price, real_stock_price)\n",
    "# calculate RMSE 均方根误差--->sqrt[MSE]    (对均方误差开方)\n",
    "rmse = math.sqrt(mean_squared_error(predicted_stock_price, real_stock_price))\n",
    "# calculate MAE 平均绝对误差----->E[|预测值-真实值|](预测值减真实值求绝对值后求均值）\n",
    "mae = mean_absolute_error(predicted_stock_price, real_stock_price)\n",
    "print('均方误差: %.6f' % mse)\n",
    "print('均方根误差: %.6f' % rmse)\n",
    "print('平均绝对误差: %.6f' % mae)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
